/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */



import java.util.ArrayList;

/**
 *@author cnavarro
 * 
 */
public class Noeud<T>{

    private T info;
    private Noeud<T> pere;
    private ArrayList<Noeud<T>> fils;

    /**
     * Getteur fils
     * @return
     */
    public ArrayList<Noeud<T>> getFils() {
        return fils;
    }

    /**
     * Setteur fils
     * @param fils
     */
    public void setFils(ArrayList<Noeud<T>> fils) {
        this.fils = fils;
    }

    /**
     * Getteur item
     * @return
     */
    public T getInfo() {
        return info;
    }

    /**
     * Setteur Item
     * @param info
     */
    public void setInfo(T info) {
        this.info = info;
    }

    /**
     * Getteur Pere
     * @return
     */
    public Noeud<T> getPere() {
        return pere;
    }

    /**
     * Setteur Pere
     * @param pere
     */
    public void setPere(Noeud<T> pere) {
        this.pere = pere;
    }

    /**
     * Constructeur par défaut
     */
    public Noeud ()
    {
        info = null;
        pere = null;
        fils = new ArrayList <Noeud<T>>() ;
    }

    /**
     * Constucteur de copie
     * @param information
     * @param papa
     */
    public Noeud (T information, Noeud<T> papa)
    {
        this.info = information;
        this.pere = papa;
        fils = new ArrayList <Noeud<T>>() ;
    }

    /**
     * Ajoute un fils au noeud
     * @param item
     */
    public void ajouterFils (T item)
    {
        this.fils.add(new Noeud(item, this));
    }

    /**
     * Teste si le noeud courant est un noeud feuille, faux sinon
     * @return
     */
    public boolean isNoeudFeuille ()
    {
        return this.fils.isEmpty();
    }

    /**
     * Retourne le nombre de fils du noeud
     * @return
     */
    public int getNbFils ()
    {
        return this.fils.size();
    }
}
